package com.ds.infra.rpc.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 作用：RPC消费者引用注解
 * 标注在消费者字段上，用于注入代理对象
 *
 * @author WeiShaoying
 * @since 1.0.0
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RpcReference {

    /**
     * 服务版本号（必须与服务提供方一致）
     */
    String version() default "";

    /**
     * 负载均衡策略（默认轮询）
     */
    LoadBalanceStrategy loadBalance() default LoadBalanceStrategy.ROUND_ROBIN;

    /**
     * 超时时间（毫秒，默认3秒）
     */
    int timeout() default 3000;

    /**
     * 重试次数（默认不重试）
     */
    int retries() default 0;
}
